Rendering real-time views on a complex model is a computation-intensive task. Current methods generally rely on encoding real-world objects in a complex three-dimensional geometric model which approximates the surfaces, textures and locations of the real-world objects. Objects are usually represented as a collection of polygons (but can be a mathematical description, fractal or the like) which are collected together to form a mesh having the shape and visual and/or tactile characteristics of the encoded real-world object. Realistic models of any reasonable size, e.g., simulating large-scale terrain meshes (see FIG. 2), can contain hundreds of meshes with millions of polygons to represent a realistic view of reality. Consequently, enormous computer resources are required to manipulate large meshes.
To simplify processing when rendering views of such detailed scenes, view-dependent progressive-meshes (VDPM) were developed. Hoppe shows a VDPM framework that represents an arbitrary delta-mesh (base mesh plus deltas required to produce a more detailed mesh) as a hierarchy of geometrically optimized transformations. A series of geomorph operations can be performed to convert between differing levels of detail of the progressive mesh. (For further information, see Hoppe, Progressive Meshes, Computer Graphics Proceedings, Annual Conference Series (ACM SIGGRAPH), pp. 99-108 (1996); Hoppe, View-Dependent Refinement of Progressive Meshes, ACM SIGGRAPH, pp. 189-198 (1997).)
For further information regarding techniques for constructing and using progressive meshes, view-dependent progressive meshes, and geomorphs, see: U.S. Pat. No. 5,963,209 for Encoding And Progressive Transmitting of Progressive Meshes, bearing application Ser. No. 08/586,953 and filed Jan. 11, 1996; U.S. Pat. No. 5,966,133 for Selective Refinement Of Progressive Meshes, bearing application Ser. No. 08/797,501 and filed Feb. 7, 1997; U.S. Pat. No. 6,108,006 for View-Dependent Refinement of Progressive Meshes, bearing application Ser. No. 08/826,570 and filed Apr. 3, 1997; U.S. Pat. No. 6,137,492 for Adaptive Refinement of Progressive Meshes, bearing application Ser. No. 08/826,573 and filed Apr. 3, 1997; and U.S. Pat. No. 5,966,140 for a Method for Creating Progressive Simplicial Complexes, bearing application Ser. No. 08/880,090 and filed Jun. 20, 1997. These patents are incorporated herein by reference.
A problem with progressive mesh implementations is that they generally allocate storage based on the size of the original fully-detailed mesh. The Hoppe VDPM framework alleviates some of these resource requirements by representing the original fully detailed mesh as a progressive mesh storing a simplified base mesh and a sequence of mesh refinement transformations (i.e., vertex splits). These refinements, when applied to the base mesh, exactly reconstruct the original fully detailed mesh.
To further reduce resource requirements, Hoppe defines a viewpoint with respect to the mesh, and implements a “selectively refined mesh” (SRM), which is a mesh that is altered based on satisfying certain viewing criteria. The viewpoint corresponds to what a user might see of a mesh, or to what is visible in a viewport. The result is view-dependent level of detail (LOD) applied to different portions of a mesh. For example, viewing conditions may depend on the location of a flight simulator pilot in a mesh model, so that mesh detail centers on those portions of the mesh near the pilot's plane. For a view-dependent LOD, vertices of the mesh are either coarsened or refined based on the view-dependent refinement criteria. Examples of view-dependent criteria affecting the occurrence of a vsplit (vertex split) operation is whether a vertex's neighborhood intersects the view frustum (see FIG. 7), has a Gauss map not strictly oriented away, or has a screen-projected deviation from M (the original fully detailed mesh) that exceeds a pre-determined pixel tolerance. The mesh alteration is either effected instantly, or geomorphed (interpolated) over time. Which method is used depends on whether an affected mesh region is entering, leaving, or staying within a particular viewing frustum (e.g. the view dependency). Only portions of a mesh remaining in view (i.e., within the frustum) need to be geomorphed to avoid “popping” the mesh alteration into place.
A significant problem with progressive mesh systems, however, is that they consume computer resources proportional to the size of the fully detailed mesh Mn. That is, in the prior art, if Mn has p faces, but has been simplified into a simpler mesh M0 having only q faces, where q<<p (much less than), memory and other computer resources are allocated on a scale proportional with the connectivity of the larger mesh Mn. For example, to compute a geomorph between two SRMs of the progressive mesh hierarchy, some prior art methods require computations involving all vertices, rather than on just those vertices needed for a view-dependent computation. Requiring resource allocation for inactive vertices is very inefficient.
To minimize resource requirements, the technology can optimize storage requirements by utilizing dynamic data structures for storing and manipulating a mesh that allocate storage based on the active vertices of the mesh. Thus, storage requirements fluctuate according to view-dependent criteria. Instead of statically storing mesh connectivity for an entire fully detailed mesh Mn (prior art), static data structures only encode the vertex hierarchy of the simplest mesh M0 and the refinement dependencies required to produce Mn. Separate dynamic data structures encode, according to changes in view-dependent parameters, vertices and morph states for an active mesh. This results in substantial resource savings when (as is typical) the fully detailed mesh is large, but the number of active vertices is just a small subset of the overall number of vertices.
However, if a mesh has a huge number of faces, such as for a large terrain mesh, even with dynamic data allocation, resource requirements may still be very substantial.
To overcome this problem, the original fully detailed mesh is subdivided into multiple arbitrarily shaped “start” regions, which when combined, represent the entire original mesh. For simplicity, it is assumed the regions are rectangular. When dividing the original mesh, each start region is recursively subdivided into smaller sub-regions, until a stop state is reached. Such a stop state may be based on region size, region complexity, resource requirements (e.g., memory or processing), or some other predetermined basis. When the recursion stop state is reached (assuming a simple recursive algorithm), each start region has been subdivided into many smaller mesh regions. Before falling back in the recursion process, each stop state region is simplified to a predetermined level of simplification. This corresponds to a standard progressive mesh computation of the most detailed (e.g. bottom) level of the mesh hierarchy.
The now-simplified stop state regions are stitched together to form a larger region. This undoes the region division of the previous recursive step. On falling back in the recursion this larger stitched region is then again simplified and stitched with other regions from this previous recursive level. Note that although the term “stitched” is used, the mesh may be stored such that only one copy of the mesh exists, so that simplifying the stop state regions directly simplifies the original mesh. So long as the simplification steps are recorded, the original mesh may be selectively replaced in the simplification process. Eventually all recursive levels are traversed, leaving a very simple mesh (M0) having only a few triangle faces.
During manipulation of the mesh hierarchy, selective refinement or coarsening operations can be constrained to operate only within a single sub-region. This is a natural restriction since a proper blocking, where no faces cross a region border, yields independent sub-regions. On multi-processor machines, or where operating systems/programming environments provide multi-tasking or multi-threading services, mesh operations for each region can therefore be processed in parallel.
Additional features and advantages of the invention will be made apparent from the following detailed description of an illustrated embodiment which proceeds with reference to the accompanying drawings.